# coding:utf-8
# Project:pyinterface
# author:wj
# time:2022/12/30 17:45
# Email:1305137785@qq.com
from jsonpath import jsonpath
import json
from loguru import logger
from tool.handle_attribute import HandleAttribute
import allure

class HandleExtract:
    @allure.step('提取响应数据并设置为全局变量')
    def handle_extract(self,extract_data:str,response:dict):
        if extract_data==None:
            print('测试用例里提取数据为空，没有要提取的数据')
            allure.attach(body='测试用例里提取数据为空，没有要提取的数据',
                          name='测试用例里提取数据为空，没有要提取的数据',
                          attachment_type=allure.attachment_type.TEXT)
        else:
            extract = extract_data if isinstance(extract_data,dict) else json.loads(extract_data)
            for key,value in extract.items():
                try:
                    res_data = jsonpath(response,value)[0]
                except Exception as error:
                    logger.error(msg=error)
                else:
                    # 将要提取的数据设置为类属性，然后用的时候提取
                    setattr(HandleAttribute,key,res_data)
                    print('要提取的数据是{}'.format(getattr(HandleAttribute,key)))
                    logger.info(f'要提取的key是：{key}数据是：{getattr(HandleAttribute,key)}')
                    # allure里添加文本附件
                    allure.attach(body=f'{getattr(HandleAttribute,key)}',name=f'要提取的键是{key}值是{getattr(HandleAttribute,key)}',
                                  attachment_type=allure.attachment_type.TEXT)